import axios from 'axios'
import config from '@/config'

// 判断是生产环境还是开发环境
const baseUrl = process.env.NODE_ENV == 'development' ? config.baseUrl.dev : config.baseUrl.pro

// 统一定义请求类
class HttpRequest {
    constructor(baseUrl) {
        this.baseUrl = baseUrl
        this.queue = {} // 请求队列
    }

    // 配置
    getInsideConfig() {
        // 内置请求最终会与传入的请求合并
        const config = {
            baseURL: this.baseUrl,
            header: {

            }
        }

        return config
    }

    // 拦截
    interceptors(instance, url) {
        // 请求拦截
        instance.interceptors.request.use((config) => {
            // 修改配置config
            console.log('拦截请求edit-config=>', config)
            return config;
        }, (error) => {
            return Promise.reject(error)
        })

        // 响应拦截器
        instance.interceptors.response.use((response) => {
            // 处理响应
            console.log('每个响应=>', response)
            return response
        }, function (error) {
            // console.log(error)
            return Promise.reject(error)
        })
    }

    // 请求
    request(options) {
        const instance = axios.create() //创建实例对象
        options = Object.assign(this.getInsideConfig(), options)
        this.interceptors(instance, options.url)
        return instance(options)
    }
}

// 实例化
const axiosObj = new HttpRequest(baseUrl)
export default axiosObj